﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Apa.Control;
using Apa.Data;

namespace Apa.Forms
{
    public partial class frmRegistroCalificado : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                Controladora control = new Control.Controladora();


                List<tblLicencia> licencia = Session["Licencia"] as List<tblLicencia>;
                int idPrograma = licencia.First().idPrograma;
                Session.Add("idPrograma", idPrograma.ToString());
                List<tblResolucion> resolucion = control.consultarResolucion(idPrograma).Where(x => x.estadoRC == 1 && x.vigenciaRC >= 0).ToList();


                //tblUsuario usuario = Session["Usuario"] as tblUsuario;

                if (resolucion.Count() > 0)
                {

                    //tbResolucion.Enabled = false;
                    //tbFechaResolucion.Enabled = false;
                    //tbVigencia.Enabled = false;
                    //tbFechaVencimiento.Enabled = false;
                    //tbFechaRadicacion.Enabled = false;


                    btGuardarDb.Text = "Actualizar";



                    tblResolucion autoevalua = resolucion.First();

                    Session.Add("resolucion", autoevalua);

                    tbResolucion.Text = autoevalua.resolucionAprobacionRC;
                    tbFechaResolucion.Text = Convert.ToDateTime(autoevalua.fechaResolucionRC).ToString("yyyy-MM-dd");
                    tbVigencia.Text = autoevalua.vigenciaRC.ToString();
                    tbFechaVencimiento.Text = Convert.ToDateTime(autoevalua.fechaVencimientoRC).ToString("yyyy-MM-dd");
                    tbFechaRadicacion.Text = Convert.ToDateTime(autoevalua.fechaRadicacionSaces).ToString("yyyy-MM-dd");
                    //  tbNroAutoevauacion.Text = autoevalua.NoAutoEvaluacion.ToString();



                }
                else
                {

                    btGuardarDb.Text = "Nuevo";
                }

                cargarConsideracionesGenerales();

            }
        }

        protected void btGuardar_Click(object sender, EventArgs e)
        {

            Controladora control = new Controladora();

            int idPrograma = int.Parse(((string)Session["idPrograma"]));
            string nivelAcademico = null;
            string numeroCreditos = null;
            string metodologia = null;
            DateTime fechaCreacion = DateTime.Now;

            string resolucionAprobacionRC = tbResolucion.Text;
            DateTime fechaResolucionRC = DateTime.Parse(tbFechaResolucion.Text);
            int vigenciaRC = int.Parse(tbVigencia.Text);
            DateTime fechaVencimientoRC = DateTime.Parse(tbFechaVencimiento.Text);
            DateTime fechaRadicacionSaces = DateTime.Parse(tbFechaRadicacion.Text);
            //int nroAutoEvalacion = int.Parse(tbNroAutoevauacion.Text);
            int estadoRC = 1;

            string resolucionAprobacionAC = null;
            DateTime fechaResolucionAC = DateTime.Now;
            int vigenciaAC = 0;
            DateTime fechaVencimientoAC = DateTime.Now;
            int estadoAC = 0;

            tblResolucion autEv = null;

            if (btGuardarDb.Text == "Nuevo")
            {
                autEv = control.insertarAutoevaluacion(idPrograma, nivelAcademico, numeroCreditos,
                metodologia, fechaCreacion, resolucionAprobacionRC, fechaResolucionRC, vigenciaRC, fechaVencimientoRC,
                fechaRadicacionSaces, 0, estadoRC, resolucionAprobacionAC, fechaResolucionAC,
                vigenciaAC, fechaVencimientoAC, estadoAC, DateTime.Now, DateTime.Now);

            }
            else
            {

                tblResolucion resolucion = Session["resolucion"] as tblResolucion;

                if (resolucion != null)
                {
                    autEv = control.actualizarResolucion(resolucion.consecutivo, idPrograma, nivelAcademico, numeroCreditos,
                    metodologia, fechaCreacion, resolucionAprobacionRC, fechaResolucionRC, vigenciaRC, fechaVencimientoRC,
                    fechaRadicacionSaces, 0, estadoRC, resolucionAprobacionAC, fechaResolucionAC,
                    vigenciaAC, fechaVencimientoAC, estadoAC, DateTime.Now, DateTime.Now);
                }
                else
                {


                    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('Error al actualizar la resolución!');", true);

                }
            }

            if (autEv != null)
            {
                //tbResolucion.Enabled = false;
                //tbFechaResolucion.Enabled = false;
                //tbVigencia.Enabled = false;
                //tbFechaVencimiento.Enabled = false;
                //tbFechaRadicacion.Enabled = false;

                //btLimpiarDb.Enabled = false;
                // btGuardarDb.Enabled = false;


                if (btGuardarDb.Text == "Nuevo")
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('Se insertó correctamente la resolución!');", true);
                }
                else
                {

                    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('Se actualizó correctamente la resolución!');", true);

                }


                btGuardarDb.Text = "Actualizar";
            }
            else
            {


                btGuardarDb.Text = "Nuevo";

            }
            
        }




        public void cargarConsideracionesGenerales()
        {

            Controladora control = new Controladora();
            tblUsuario usuario = Session["Usuario"] as tblUsuario;

            //modulo 1
            List<tblComponentesxModulo> modulo1 = control.consultarModulosxComponentesXUsuario("REGISTRO CALIFICADO", usuario.id).Where(x => x.activo == 1).ToList();


            //modulo2
            List<tblComponentesxModulo> modulo2 = control.consultarModulosxComponentesXUsuario("ALTA CALIDAD", usuario.id).Where(x => x.activo == 1).ToList();

            List<tblConsideraciones> consideraciones = null;

            if (modulo1.Count > 0 && modulo2.Count > 0)
            {

                consideraciones = control.consultarConsideraciones();
            }
            else
            {

                if (modulo1.Count > 0)
                {

                    consideraciones = control.consultarConsideraciones().Where(x => x.tipo_modulo == "RC").ToList();
                }

                if (modulo2.Count > 0)
                {

                    consideraciones = control.consultarConsideraciones().Where(x => x.tipo_modulo == "AC").ToList();
                }

            }


        }


        protected void btCerrar(object sender, EventArgs e)
        {

            Controladora control = new Controladora();


            tblResolucion resolucion = Session["resolucion"] as tblResolucion;

            tblAutoEvaluacion autoe = control.consultarAutoevaluacionXResolucion(resolucion.consecutivo);
            if (autoe == null)
            {

                tblResolucion res = control.actualizarResolucion(resolucion.consecutivo);


                if (res != null)
                {

                    btGuardarDb.Text = "Nuevo";

                    tbResolucion.Text = "";
                    tbFechaResolucion.Text = "";
                    tbVigencia.Text = "";
                    tbFechaVencimiento.Text = "";
                    tbFechaRadicacion.Text = "";

                    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('Se cerró correctamente la resolución!');", true);

                }
                else
                {
                    btGuardarDb.Text = "Actualizar";

                }


            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('No se puede cerrar la resolución porque existe una autoevaluación vigente!');", true);

            }
        }


    }
}